package com.qf.utils;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 定义一个用于创建动态代理对象的工厂类
 * 创建对象的方法有哪些
 * 1.new
 * 2.Class.newInstance()
 * 3.Proxy.newProxyInstance()
 */
public class MyProxyFactoryBetter {

    //根据传入的对象生成该对象的一个代理对象
    public static Object getProxy(Object target,InvocationHandler handler){

        /**
         * 参数1：类加载器
         * 参数2：被代理对象的类实现了哪些接口，这些接口的class数组就是第二个参数
         * 参数3：InvocationHandler , 封装了我们的代理逻辑
         */
        Object o = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);


        return o;
    }

}
